Computer-based digital image editing applications allow a user to adjust a digital image after the image has been captured or created. For example, an image editing application may be used to change the exposure of the image or add highlights or shadows to the image, among other adjustments.
Such image editing applications typically present user interface controls for adjusting the image. Examples of such user interface controls include graphical slider controls and text entry fields, among other controls. The controls are used to change the values of various adjustable parameters of the digital image.
Many of these image editing applications also present a preview image. The preview image is a version of the digital image that has been adjusted based on the current settings of the user interface controls. When the user changes the setting of one of the user interface controls, these image editing applications update the preview image to reflect the settings change. By presenting a preview image that is updated as the user manipulates the user interface controls, the user can experiment with different changes to adjustable parameters and receive visual feedback on how the changes affect the digital image undergoing adjustment.
One possible technique for applying the current settings of the user interfaces controls to the preview image involves the image editing application processing a version of the digital image through an image filter chain (or just filter chain) in response to detecting user input that changes the value of an adjustable parameter. A filter chain is an ordered set of image filters. Each filter accepts as input a digital image and values for one or more adjustable parameters of that filter. Each filter produces a processed digital image as output. Each filter may process its input digital image differently to accomplish different image adjustments. For example, one filter may adjust the color of its input image while another filter may sharpen its input image. The image that is output by a filter in the ordered set may be provided as input to the next filter in the ordered set. Thus, with a filter chain, a combination of multiple image adjustments may be applied to the digital image undergoing adjustment to produce an updated preview image.
Unfortunately, using a filter chain to update the preview image may result in a sub-optimal user experience. In particular, there may be a delay noticeable to the user after the user changes the setting of user interface controls for an adjustable parameter and before the preview image is updated to reflect the change. This noticeable delay may be caused by the time needed to process the digital image undergoing adjustment through the filter chain.
For example, assume that an image editing application has three controls, one for each of brightness, contrast, and exposure. Further assume that the current value of each of these parameters is 50, and that the possible value range is from 0 to 100. If the brightness control is changed from 50 to 55, the preview image is changed to reflect the adjustment by applying the brightness filter (based on the value 55), then the contrast filter (based on the value 50), and then the exposure filter (based on the value 50). Only after all filters in the chain have been applied can the preview image be updated to reflect the change. The overhead associated with applying these three filters in response to the change in one parameter may cause an unacceptable delay between (a) when the parameter value was changed, and (b) when the preview image reflects the change.
Further, as the number of adjustable parameters supported by the image editing application increases, the number of filters in the filter chain may also increase, adding to this delay. As a result of this noticeable time lag, the user may become frustrated with image editing application. Users would appreciate an image editing application capable of updating the preview image in response to user input that changes an adjustable parameter without a noticeable delay or at least with a shorter delay.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.